package com.ruoyi.post.domain;

import java.time.LocalDate;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 帖子管理对象 post_basic_info
 *
 * @author 区嘉盛
 * @date 2025-06-10
 */
@Schema(description = "帖子管理对象")
public class PostBasicInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 自增ID
     */
    @Schema(title = "自增ID")
    @Excel(name = "自增ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 帖子编码
     */
    @Schema(title = "帖子编码")
    private String postCode;

    /**
     * 所属圈子ID
     */
    @Schema(title = "所属圈子ID")
    @Excel(name = "所属圈子ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long circleId;

    /**
     * 作者用户ID
     */
    @Schema(title = "作者用户ID")
    @Excel(name = "作者用户ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long authorUserId;

    /**
     * 帖子标题
     */
    @Schema(title = "帖子标题")
    @Excel(name = "帖子标题")
    private String postTitle;

    /**
     * 帖子内容
     */
    @Schema(title = "帖子内容")
    @Excel(name = "帖子内容")
    private String postContent;

    /**
     * 点赞数量统计
     */
    @Schema(title = "点赞数量统计")
    @Excel(name = "点赞数量统计")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long likeCount;

    /**
     * 评论数量统计
     */
    @Schema(title = "评论数量统计")
    @Excel(name = "评论数量统计")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long commentCount;

    /**
     * 收藏数量统计
     */
    @Schema(title = "收藏数量统计")
    @Excel(name = "收藏数量统计")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long favoriteCount;

    /**
     * 是否草稿
     */
    @Schema(title = "是否草稿")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long isDraft;

    /**
     * AI审核状态
     */
    @Schema(title = "AI审核状态")
    @Excel(name = "AI审核状态")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long aiAuditStatus;

    /**
     * AI审核拒绝原因
     */
    @Schema(title = "AI审核拒绝原因")
    @Excel(name = "AI审核拒绝原因")
    private String aiAuditReason;

    /**
     * AI审核时间
     */
    @Schema(title = "AI审核时间")
    @Excel(name = "AI审核时间")
    private Date aiAuditTime;

    /**
     * 创建人
     */
    @Schema(title = "创建人")
    private String createdBy;

    /**
     * 创建时间
     */
    @Schema(title = "创建时间")
    private LocalDate createdTime;

    /**
     * 更新人
     */
    @Schema(title = "更新人")
    private String updatedBy;

    /**
     * 更新时间
     */
    @Schema(title = "更新时间")
    private LocalDate updatedTime;

    /**
     * 删除标志
     */
    @Schema(title = "删除标志")
    private Long deletedFlag;

    /**
     * 帖子图片列表
     */
    @Schema(title = "帖子图片列表")
    @Excel(name = "帖子图片列表")
    private String postImages;

    /**
     * 封面图片URL
     */
    @Schema(title = "封面图片URL")
    @Excel(name = "封面图片URL")
    private String coverImage;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setPostCode(String postCode) {
        this.postCode = postCode;
    }

    public String getPostCode() {
        return postCode;
    }


    public void setCircleId(Long circleId) {
        this.circleId = circleId;
    }

    public Long getCircleId() {
        return circleId;
    }


    public void setAuthorUserId(Long authorUserId) {
        this.authorUserId = authorUserId;
    }

    public Long getAuthorUserId() {
        return authorUserId;
    }


    public void setPostTitle(String postTitle) {
        this.postTitle = postTitle;
    }

    public String getPostTitle() {
        return postTitle;
    }


    public void setPostContent(String postContent) {
        this.postContent = postContent;
    }

    public String getPostContent() {
        return postContent;
    }


    public void setLikeCount(Long likeCount) {
        this.likeCount = likeCount;
    }

    public Long getLikeCount() {
        return likeCount;
    }


    public void setCommentCount(Long commentCount) {
        this.commentCount = commentCount;
    }

    public Long getCommentCount() {
        return commentCount;
    }

    public void setFavoriteCount(Long favoriteCount) {
        this.favoriteCount = favoriteCount;
    }

    public Long getFavoriteCount() {
        return favoriteCount;
    }

    public void setIsDraft(Long isDraft) {
        this.isDraft = isDraft;
    }

    public Long getIsDraft() {
        return isDraft;
    }


    public void setAiAuditStatus(Long aiAuditStatus) {
        this.aiAuditStatus = aiAuditStatus;
    }

    public Long getAiAuditStatus() {
        return aiAuditStatus;
    }


    public void setAiAuditReason(String aiAuditReason) {
        this.aiAuditReason = aiAuditReason;
    }

    public String getAiAuditReason() {
        return aiAuditReason;
    }

    public void setAiAuditTime(Date aiAuditTime) {
        this.aiAuditTime = aiAuditTime;
    }

    public Date getAiAuditTime() {
        return aiAuditTime;
    }


    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public String getCreatedBy() {
        return createdBy;
    }


    public void setCreatedTime(LocalDate createdTime) {
        this.createdTime = createdTime;
    }

    public LocalDate getCreatedTime() {
        return createdTime;
    }


    public void setUpdatedBy(String updatedBy) {
        this.updatedBy = updatedBy;
    }

    public String getUpdatedBy() {
        return updatedBy;
    }


    public void setUpdatedTime(LocalDate updatedTime) {
        this.updatedTime = updatedTime;
    }

    public LocalDate getUpdatedTime() {
        return updatedTime;
    }


    public void setDeletedFlag(Long deletedFlag) {
        this.deletedFlag = deletedFlag;
    }

    public Long getDeletedFlag() {
        return deletedFlag;
    }

    public void setPostImages(String postImages) {
        this.postImages = postImages;
    }

    public String getPostImages() {
        return postImages;
    }

    public void setCoverImage(String coverImage) {
        this.coverImage = coverImage;
    }

    public String getCoverImage() {
        return coverImage;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("postCode", getPostCode())
                .append("circleId", getCircleId())
                .append("authorUserId", getAuthorUserId())
                .append("postTitle", getPostTitle())
                .append("postContent", getPostContent())
                .append("likeCount", getLikeCount())
                .append("commentCount", getCommentCount())
                .append("favoriteCount", getFavoriteCount())
                .append("isDraft", getIsDraft())
                .append("aiAuditStatus", getAiAuditStatus())
                .append("aiAuditReason", getAiAuditReason())
                .append("aiAuditTime", getAiAuditTime())
                .append("postImages", getPostImages())
                .append("coverImage", getCoverImage())
                .append("createdBy", getCreatedBy())
                .append("createdTime", getCreatedTime())
                .append("updatedBy", getUpdatedBy())
                .append("updatedTime", getUpdatedTime())
                .append("deletedFlag", getDeletedFlag())
                .toString();
    }
}
